package homework26;

public class TestAnimal {
    public static void main(String[] args) {
        // 父类引用指向子类对象
        Animal dog = new Dog("旺财");
        Animal cat = new Cat("咪咪");

        // 多态：调用相同方法，表现不同行为
        System.out.println(dog.toString()); // 输出：Dog{name='旺财'}
        System.out.println(cat.toString()); // 输出：Cat{name='咪咪'}

        // 强制类型转换并调用子类独有方法
        if (dog instanceof Dog) {
            ((Dog) dog).watchHome(); // 输出：旺财正在看家
        }

        if (cat instanceof Cat) {
            ((Cat) cat).catchMouse(); // 输出：咪咪正在抓老鼠
        }

        // 错误示例：编译通过，但运行时抛出ClassCastException
        // ((Dog) cat).watchHome(); // 运行时错误：ClassCastException
    }
}
